package com.ssy.lingxi.pay.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.pay.api.model.vo.request.CreditBillInitVO;
import com.ssy.lingxi.pay.model.vo.request.PageQueryCreditOverdueVO;
import com.ssy.lingxi.pay.model.vo.response.CreditBillDetailVO;
import com.ssy.lingxi.pay.model.vo.response.CreditBillSelectVO;
import com.ssy.lingxi.pay.model.vo.response.CreditOverduePageQueryAppVO;
import com.ssy.lingxi.pay.model.vo.response.CreditOverduePageQueryVO;

import java.util.List;

/**
 * 授信账单接口
 * @author 伍将
 * @date 2020/8/21
 * @version 2.0.0
 */
public interface ICreditBillService {

    /**
     * 授信账单初始化
     * @author 伍将
     * @date 2020/8/21
     * @param initVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> init(CreditBillInitVO initVO);

    /**
     * 初始化逾期
     * @author 伍将
     * @date 2020/8/28
     * @param initVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> initOverdue(CreditBillInitVO initVO);

    /**
     * 根据授信id获取授信账单下拉框
     * @author 伍将
     * @date 2020/8/21
     * @param creditId:
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.pay.model.vo.response.CreditBillSelectVO>>
     **/
    Wrapper<List<CreditBillSelectVO>> getSelect(Long creditId);

    /**
     * 获取授信账单详情
     * @author 伍将
     * @date 2020/8/21
     * @param id:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.pay.model.vo.response.CreditBillDetailVO>
     **/
    Wrapper<CreditBillDetailVO> getDetail(Long id);
    /**
     * 获取授信账单详情
     * @author 伍将
     * @date 2020/8/21
     * @param id:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.pay.model.vo.response.CreditBillDetailVO>
     **/
    Wrapper<CreditBillDetailVO> getDetail(UserLoginCacheDTO user, Long id);

    /**
     * 获取授信账单详情
     * @author 伍将
     * @date 2020/8/21
     * @param id:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.pay.model.vo.response.CreditBillDetailVO>
     **/
    Wrapper<CreditBillDetailVO> getDetailByMobile(Long id);

    /**
     * 分页查询逾期记录
     * @author 伍将
     * @date 2020/8/21
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.pay.model.vo.response.CreditOverduePageQueryVO>>
     **/
    Wrapper<PageData<CreditOverduePageQueryVO>> pageOverdue(PageQueryCreditOverdueVO pageVO);

    /**
     * App端分页查询逾期记录
     * @author 伍将
     * @date 2021/3/9
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<CreditOverduePageQueryAppVO>> pageOverdueByApp(PageQueryCreditOverdueVO pageVO);

    /**
     * 还款通知
     * @author 伍将
     * @date 2020/12/21
     * @param time:
     * @return:
     **/
    Wrapper<Void> repayNotice(String time);

    /**
     * 逾期通知
     * @author 伍将
     * @date 2020/12/21
     * @param time:
     * @return:
     **/
    Wrapper<Void> overdueNotice(String time);

    /**
     * 账单通知
     * @author 伍将
     * @date 2020/12/21
     * @param time:
     * @return:
     **/
    Wrapper<Void> billNotice(String time);
}
